From 65601617134bc84b72b7c2764ec9513d986c6006 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Mon, 15 May 2006 18:33:41 +0000 Subject: [PATCH] Reverse the order of ranges when printing in reverse. (#341578) 2006-05-15 Matthias Clasen * gtk/gtkprintoperation.c: Reverse the order of ranges when printing in reverse. (#341578) --- ChangeLog | 5 +++++ ChangeLog.pre-2-10 | 5 +++++ gtk/gtkprintoperation.c | 46 ++++++++++++++++++++++++----------------- 3 files changed, 37 insertions(+), 19 deletions(-) diff --git a/ChangeLog b/ChangeLog index 2bd7d557f5..a271664dcb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2006-05-15 Matthias Clasen + + * gtk/gtkprintoperation.c: Reverse the order of + ranges when printing in reverse. (#341578) + 2006-05-15 Alexander Larsson * gtk/gtkprintjob.[ch]: diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 2bd7d557f5..a271664dcb 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,8 @@ +2006-05-15 Matthias Clasen + + * gtk/gtkprintoperation.c: Reverse the order of + ranges when printing in reverse. (#341578) + 2006-05-15 Alexander Larsson * gtk/gtkprintjob.[ch]: diff --git a/gtk/gtkprintoperation.c b/gtk/gtkprintoperation.c index 5756f3bba7..be3500c73a 100644 --- a/gtk/gtkprintoperation.c +++ b/gtk/gtkprintoperation.c @@ -1256,23 +1256,21 @@ typedef struct } PrintPagesData; static void -find_range (gboolean reverse, - GtkPageRange *range, - gint *start, - gint *end, - gint *inc) +find_range (PrintPagesData *data) { - if (reverse) + GtkPageRange *range; + + range = &data->ranges[data->range]; + + if (data->inc < 0) { - *start = range->end; - *end = range->start - 1; - *inc = -1; + data->start = range->end; + data->end = range->start - 1; } else { - *start = range->start; - *end = range->end + 1; - *inc = 1; + data->start = range->start; + data->end = range->end + 1; } } @@ -1285,16 +1283,16 @@ increment_page_sequence (PrintPagesData *data) data->page += data->inc; if (data->page == data->end) { - data->range++; - if (data->range == data->num_ranges) + data->range += data->inc; + if (data->range == -1 || data->range == data->num_ranges) { data->uncollated++; if (data->uncollated == data->uncollated_copies) return FALSE; - data->range = 0; + + data->range = data->inc < 0 ? data->num_ranges - 1 : 0; } - find_range (priv->manual_reverse, &data->ranges[data->range], - &data->start, &data->end, &data->inc); + find_range (data); data->page = data->start; } } @@ -1444,8 +1442,18 @@ print_pages (GtkPrintOperation *op, data->print_context = print_context; data->uncollated = 0; - data->range = 0; - find_range (data->op->priv->manual_reverse, &data->ranges[0], &data->start, &data->end, &data->inc); + if (data->op->priv->manual_reverse) + { + data->range = data->num_ranges - 1; + data->inc = -1; + } + else + { + data->range = 0; + data->inc = 1; + } + find_range (data); + data->page = data->start - data->inc; data->collated = data->collated_copies - 1; -- 2.30.2